package groovy.syntax

/**
 * @author houjinxin
 *	演示各种数字类型
 *  Groovy supports different kinds of integral literals and decimal literals, backed by the usual Number types of Java.
 *  Groovy 支持不同种类的整形直接量和decimal直接量，这些是靠java的Number类型来支持的
 */

//以下类型与Java相同
//byte
//char
//short
//int
//long
//java.lang.BigInteger
//以下为声明整形变量的方式
// primitive types
//byte  b = 1
//char  c = 2
//short s = 3
//int   i = 4
//long  l = 5

// infinite precision
BigInteger bi =  65555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555

//正值
def a = 1
assert a instanceof Integer

// Integer.MAX_VALUE
def b = 2147483647
assert b instanceof Integer

// Integer.MAX_VALUE + 1
def c = 2147483648
assert c instanceof Long

// Long.MAX_VALUE
def d = 9223372036854775807
assert d instanceof Long

// Long.MAX_VALUE + 1
def e = 9223372036854775808
assert e instanceof BigInteger

//负值
def na = -1
assert na instanceof Integer

// Integer.MIN_VALUE
def nb = -2147483648
assert nb instanceof Integer

// Integer.MIN_VALUE - 1
def nc = -2147483649
assert nc instanceof Long

// Long.MIN_VALUE
def nd = -9223372036854775808
assert nd instanceof Long

// Long.MIN_VALUE - 1
def ne = -9223372036854775809
assert ne instanceof BigInteger